<?php
/** * class Sparcle * A rendszer ősosztálya, kötelező jelleggel minden más osztály ebből származik (ha * csak nem egy Exception, vagy más beépített osztály az). Érdemes minden * jellemzőjét minden gyermek-osztályban megadni és aktuális értékkel feltölteni. */class Sparcle{	/** Aggregations: */	/** Compositions: */	/*** Attributes: ***/	/**	 * Információt, leírást tárol az egyes osztályokról. Érdemes ide 1-2 rövid szóval	 * leírni az osztály szerepét.
	 * Az osztály-információkat az osztály deklarálása előtti sorokban érdemes az
	 * osztály kódját tartalmazó fájlban kitölteni!	 * @static	 * @access public	 */	public static $classInfo;	/**	 * Az objektum létrehozójára mutató referencia	 * @access public	 */	public $owner;	/**	 * Az osztály konstruktra, példányosítja az authorsData jellemzőt és elvégzi annak	 * beállítását a setAuthorsData() meghívásával.	 *	 * @return 	 * @access public	 */	public function __construct()
	{			} // end of member function __construct	/**	 * Az osztály destruktora	 *	 * @return 	 * @access public	 */	public function __destruct()
	{		foreach ($this as $propertyName => $propertyValue)
		{
			unset($this->$propertyName);
		}
			} // end of member function __destruct	/**	 * Visszaadja a példány osztályának nevét	 *	 * @return string	 * @access public	 */	public function className()
	{		return self::$classInfo->className;	} // end of member function className	/**	 * Visszaadja a példány osztályának szülőosztályait tömbben, vagy egyetlen szülő	 * esetén stringben	 *	 * @return 	 * @access public	 */	public function classParents()
	{		return class_parents($this->className());	} // end of member function classParents	/**	 * Visszaadja a példány méretét a memóriában	 *	 * @return int	 * @access public	 */	public function instanceSize()
	{			} // end of member function instanceSize	/**	 * Az adott osztályból példányosít egyet, és visszatér a példánnyal. Az átadott	 * paraméterek a konstruktor paraméterei lesznek.	 *	 * @return undef	 * @access public	 */	public static function construct()
	{		$className = $this->className();
		$params = func_get_args();
		foreach ($params as $k => $v)
		{
			$params['$a'.$k] = $v;
			unset($params[$k]);
		}
		
		$result = NULL;
		$argsList = (count($params) > 0 ? ', '.implode(', ', array_keys($params)) : '');
		$args = (count($params) > 0 ? implode(', ', array_keys($params)) : '');
		$eStr = 'global $result, $className%args_list%; $result = new $className(%args%);';
		$eStr = str_replace(array('%args_list%', '%args%'), array($argsList, $args), $eStr);
		
		eval($eStr);
		
		return $result;	} // end of member function new} // end of Sparcle?>